Barrel shifter

ABSTRACT

A barrel shifter receiving N symbols, arranged n 2  distinct groups of n 1  symbols, applying a circular shift to the N symbols. The barrel shifter comprises n 2  first barrel shifters, each applying a first circular shift to one of the groups of n 1  symbols; a rearrangement module receiving the N symbols provided by the first barrel shifters and providing N symbols arranged, in a determined manner, in n 1  distinct groups of n 2  symbols; n 1  second barrel shifters, each applying a second circular shift to one of the distinct groups of n 2  symbols; a control module providing, to each first barrel shifter, an identical signal bs_ctrl 1  representing the first shift, and providing, to each second barrel shifter, an identical signal bs_ctrl 2  representing the second shift; and a switching module switching at least two of the symbols of the N symbols.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a barrel shifter for symbols.

2. Discussion of the Related Art

An example of an application of a barrel shifter device relates todecoding symbols transmitted according to the DVB-S2 standard using anerror correction code of the type LDPC (Low Density Parity Check).

FIG. 1 schematically shows a barrel shifter 10 (BS) receiving N symbols12 in parallel arranged in a certain order, each symbol corresponding toa coded digital message of a determined number of bits nbit_data. Thedevice 10 outputs in parallel N symbols 14, which correspond to Nreceived symbols 12, on which a circular shift has been applied, to theleft or to the right, by a number of positions which can be chosen to bebetween 0 and N−1. The barrel shifter 10 receives a control signalbs_ctrl from which the number of positions that the received symbols 12are to be shifted can be determined.

FIG. 2 shows an example of a shift operation applied to eight symbols S₀to S₇. The top line shows an example of the positioning of symbols S₀ toS₇ as received by the barrel shifter 10 and the bottom line shows thepositioning of symbols output by the device 10 after the application ofa circular shift to the right by three positions (which is equivalent toa circular shift to the left by five positions).

FIG. 3 shows an example of a classic implementation of a barrel shifter10 receiving eight symbols and adapted to perform a circular shift tothe right by 0 to 7 positions. The device 10 comprises three rows 15,16, 17 of multiplexers. Each block 18 represents a multiplexing modulereceiving two symbols and outputting one of the two symbols received andcomprising nbit_data multiplexers. Each solid arrow 19 corresponds to apath taken by a symbol, in other words, in practice, to connecting leadsor connecting wires allowing the transmission of nbit_data bits. Themultiplexers of the first, second and third rows 15, 16, 17 arerespectively controlled by control signals bs_ctrl(0), bs_ctrl(1), andbs_ctrl(2).

Such a barrel shifter is said to have a logarithmic structure becauseeach row of multiplexers allows a circular shift by a number ofpositions rising by a power of 2. Indeed, the first row 15 allows acircular shift to the right of one position (2⁰), the second row 16allows a circular shift to the right of two positions (2¹), and thethird row 17 allows a circular shift to the right of four positions(2²). By combining control bits bs_ctrl(0), bs_ctrl(1) and bs_ctrl(2),any shift from 0 to 7 positions can be performed.

In general, a barrel shifter 10 having a logarithmic structure andreceiving N symbols requires, for performing a circular shift ofanything from 0 to N−1 positions, ceil(log₂(N)) rows of multiplexerswhere log₂(N) is the logarithm to the base 2 of N, and ceil(log₂(N)) isthe greater integer value of log₂(N). This device 10 therefore comprisesN*nbit_data*ceil(log₂(N)) multiplexers. The logarithmic structure allowsthe number of multiplexers necessary for providing a shift operation tobe minimized.

During fabrication of a barrel shifter, computer aided design utilitiesare generally used that indicate the surface area that willtheoretically be sufficient for arranging the multiplexers while takinginto account the minimum separation distances to be provided betweeneach multiplexer and the true surface area necessary for arranging themultiplexers and the connecting wires or tracks between them. Thedifference between the two surfaces is called the overhead.

One difficulty during application of a barrel shifter with logarithmicstructure is due to the large irregularity in the lengths of the paths19 and the large number of junctions between paths 19 required by thearrangement of multiplexers. This leads to a large increase of thesurface overhead when the number of symbols and/or the number of bitsper symbol becomes large. For example, for a decoder of LDPC code, theproduct of N*nbit_data can be larger than 2000. The surface overhead cantherefore be larger than 300% for a barrel shifter with logarithmicstructure. This results in barrel shifters which are very bulky.

Another drawback comes from the fact that an increase in the surfacearea of a barrel shifter brings about an increase in the length of atleast some of the paths taken by symbols. A problem is that transmissiontime of a symbol along a path depends on the path length. If thetransmission time of symbols (or at least of some of them) is too large,it may not be possible to perform a shift operation in one cycle of theclock which controls the operation of the barrel shifter. It istherefore necessary to provide, between the rows of the barrel shifter,memory elements (for example, latches) so that a shift operation can beperformed over a number of clock cycles. The addition of memory elementscontributes to the increase in the surface area occupied by the barrelshifter.

In certain cases, a vicious circle can result whereby the addition ofmemory elements brings about a rise in the length of paths of thesymbols such that additional memory elements must be provided. It cantherefore be necessary to impose a minimum duration for clock cyclesbelow which a barrel shifter with a logarithmic structure havingacceptable dimensions cannot be designed.

SUMMARY OF THE INVENTION

To achieve these objects and others, the present invention provides abarrel shifter for which the surface overhead is reduced.

Another object of the present invention is to provide a barrel shifterwhich can be realized with a number of multiplexers equal to or veryslightly greater than the number of multiplexers of a barrel shifterwith a logarithmic structure.

To achieve these objects, as well as others, the present inventionprovides, in at least one embodiment, a barrel shifter adapted toreceive a number N of symbols in parallel, arranged into a number n₂ ofdistinct groups of a number n₁ symbols, and to apply a total circularshift to the N symbols of a determined number of positions, the devicecomprising:

n₂ first barrel shifters, each first barrel shifter being adapted toreceive one of the distinct group of n₁ symbols and to apply a firstcircular shift to said group of n₁ symbols, the first shift depending onthe total circular shift;

a rearrangement module adapted to receive the N symbols provided by thefirst barrel shifters and to provide N symbols arranged, in a determinedmanner, in n₁ distinct groups of n₂ symbols; and

n₁ second barrel shifters, each second barrel shifter being adapted toreceive one of the distinct group of n₂ symbols and to apply a secondcircular shift to said group of symbols, the second shift beingdependent on the total shift.

According to one embodiment of the invention, the rearrangement moduleis adapted to provide, for a symbol received at an i^(th) positionamongst the N symbols provided by the first barrel shifters, said symbolat a j^(th) position according to the following relationship:

j=mod(i,n ₁)*n ₂+floor(i/n ₁)

where i is an integer between 0 and N−1, mod(i,n₁) is the remainder ofthe whole division of i by n₁, and floor(i/n₁) is the quotient of thewhole division of i by n₁.

According to an embodiment of the invention, the barrel shiftercomprises a control module adapted to receive a signal bs_ctrlrepresenting a total shift and to provide, to each first barrel shifter,a signal bs_ctrl1 representing the first shift which depends on thetotal shift and which is identical for each first barrel shifter, andadapted to provide, to each second barrel shifter, a signal bs_ctrl2representing the second shift which depends on the total shift and whichis identical for each second barrel shifter, the barrel shifter furthercomprising a switching module adapted to switch at least two symbolsamongst the N symbols.

According to an embodiment of the invention, the control module isadapted to provide the signal bs_ctrl1 according to the followingrelationship:

bs_ctrl1=mod(bs_ctrl,n ₁)

where mod(bs_ctrl,n₁) is the remainder of the whole division of bs_ctrlby n₁, and adapted to provide the signal bs_ctrl2 according to thefollowing relationship:

bs_ctrl2=floor(bs_ctrl/n ₁)

where floor(bs_ctrl/n₁) is the quotient of the whole division of bs_ctrlby n₁, the barrel shifter further comprising an auxiliary rearrangementmodule adapted to receive the N symbols provided by the second barrelshifters and, for a symbol received at an i^(th) position, to providesaid symbol at a j^(th) position according to the followingrelationship:

j=mod(i,n ₂)*n ₁+floor(i/n ₂)

where i is an integer between 0 and N−1, mod(i/n₂) is the remainder ofthe whole division of i by n₂, and floor(i/n₂) is the quotient of thewhole division of i by n₂, the switching module comprising Nmultiplexing modules, each multiplexing module receiving a first symbolat a relative position k, k being an integer between 1 and n₁, amongstthe n₁ symbols provided by a first barrel shifter and a second symbol atsaid relative position k amongst the n₁ symbols provided by an adjacentfirst barrel shifter and providing the second symbol when k is less thanor equal to bs_ctrl1 and the first symbol when k is greater thanbs_ctrl1.

According to an embodiment of the invention, the control module isadapted to provide the signal bs_ctrl1 according to the followingrelationship:

bs_ctrl1=floor(bs_ctrl/n ₂)

where floor(bs_ctrl/n₂) is the quotient of the whole division of bs_ctrlby n₂, and adapted to provide the signal bs_ctrl2 according to thefollowing relationship:

bs_ctrl2=mod(bs_ctrl,n ₂)

where mod(bs_ctrl,n₂) is the remainder of the whole division of bs_ctrlby n₂, the barrel shifter further comprising an auxiliary rearrangementmodule adapted to receive the N symbols and to provide the N symbols tothe first barrel shifters in such a way that, for a symbol received atan i^(th) Position, said symbol is provided at a j^(th) positionaccording to the following relationship:

j=mod(i,n ₂)*n ₁+floor(i/n ₂)

where i is an integer between 0 and N−1, mod(i,n₂) is the remainder ofthe whole division of i by n₂, and floor(i/n₂) is the quotient of thewhole division of i by n₂, the switching module comprising Nmultiplexing modules, each multiplexing module receiving a first symbolat a relative position k, k being an integer between 1 and n₂, in thegroup of n₂ symbols amongst the N symbols received by said barrelshifter and a second symbol at said relative position k in an adjacentgroup of n₂ symbols and providing, to the auxiliary rearrangementmodule, the first symbol when k is less than or equal to the differencebetween n₂ and bs_ctrl2 and the second symbol when k is greater than thedifference between n₂ and bs_ctrl2.

The present invention also provides a decoder comprising processorslinked to memory elements and to a barrel shifter as described above, inwhich the processors and the memory elements are arranged in first andsecond concentric rings, and in which the first or second barrelshifters of the barrel shifter are arranged into a third ring concentricwith the first and second rings.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other purposes, features, aspects and advantages ofthe invention will become apparent from the following detaileddescription of embodiments, given by way of illustration and notlimitation with reference to the accompanying drawings, in which:

FIG. 1, described above, shows the interfaces of a classic barrelshifter;

FIG. 2, described above, illustrates an example of shifting performed bya barrel shifter;

FIG. 3, described above, shows a classic barrel shifter having alogarithmic structure;

FIG. 4 shows an example of a barrel shifter;

FIGS. 5 to 7 show in more detail the elements of the barrel shifter ofFIG. 4;

FIG. 8 shows an example of a barrel shifter adapted to process 12symbols;

FIG. 9 illustrates the operation of the device of FIG. 8;

FIG. 10 shows a variation of the example shown in FIG. 4;

FIG. 11 shows a first example of a barrel shifter according to theinvention;

FIG. 12 illustrates the operation of the device of FIG. 10;

FIG. 13 shows a second example of a barrel shifter according to theinvention;

FIG. 14 schematically shows an example of an LDPC decoder using a barrelshifter;

FIG. 15 schematically shows a classic example of the arrangement ofelements of the decoder of FIG. 14 using a barrel shifter withlogarithmic structure; and

FIG. 16 shows an analog version of FIG. 15 for a LDPC decoder using thebarrel shifter according to the invention.

DETAILED DESCRIPTION

For reasons of clarity, the same elements have been labeled with thesame reference characters in the different figures.

The present invention provides a barrel shifter receiving N symbols andcomprising at least two successive stages, each comprising a determinednumber, possibly different per stage, of elementary barrel shifters, theelementary barrel shifters of the first stage being linked to theelementary barrel shifters of the second stage. Each elementary barrelshifter receives only one part of N symbols on which it performs a shiftoperation. The present invention allows a limitation of the variation inlengths and the number of junctions of the paths of the barrel shifter,and therefore limitation of the surface area overhead of the barrelshifter.

FIG. 4 shows the general structure of an example of a barrel shifter 20.The device 20 receives N symbols, each symbol being comprised ofnbit_data bits, and outputs N symbols on which a circular shift (barrelshift) is performed. The N symbols are arranged in n₂ groups of n₁symbols, the first group comprising the n₁ first symbols of the Nsymbols, the second group comprising the following n₁ symbols, etc. Thedevice 20 comprises a first stage 21 of n₂ elementary barrel shifters(BS1) 22. Each elementary barrel shifter 22 receives a group of n₁symbols and performs a circular shift to the right on the n₁ receivedsymbols of a number of positions between 0 and n₁−1 positions. Thebarrel shifter 20 is controlled by a control module 24 which receives acontrol signal bs_ctrl based on which it outputs the same signalbs_ctrl1 to each elementary device 22 representing the number of shiftpositions to be performed by each elementary device 22. The n₂ groups ofn₁ symbols provided by the n₂ elementary devices 22 are transmitted to arearrangement stage 26 which modifies, in a determined fashion, thepositions of the N symbols such that n₁ groups of n₂ symbols are formed.The n₁ groups of n₂ symbols are provided to a second stage 27 ofelementary barrel shifters (BS2) 28. Each elementary device 28 receivesa group of n₂ symbols and performs a circular shift to the right on then₂ symbols received by a number of positions between 0 and n₂−1positions. The elementary devices 28 receive control signals bs_ctrl2[1]to bs_ctrl2[n₁] respectively provided by the control device 24 based onthe control signal bs_ctrl. The elementary devices 28 of the secondstage 27 of the elementary devices can therefore perform differentshifts on the group of n₂ symbols received. The n₁ groups of n₂ symbolsprovided by the elementary devices 28 are transmitted to a rearrangementstage 30 which modifies, in a determined fashion, the positions of the Nsymbols. In practice, the rearrangement stages 26, 30 correspond to aparticular arrangement of the paths followed by the symbols.

The signal bs_ctrl is a binary signal representing the number of shiftpositions to be performed by the device 20.

Taking the example of the barrel shifter 20 shown in FIG. 4, we canperform a circular shift to the right by a number of positions given bythe signal bs_ctrl. The control signal bs_ctrl1 is given by thefollowing relationship:

bs_ctrl1=mod(bs_ctrl,n ₁)

where mod(bs_ctrl,n₁) is the modulo of bs_ctrl by n₁, in other words theremainder of the whole division of bs_ctrl by n₁. Each elementary device22 therefore performs a shift to the right on the n₁ symbols received bybs_ctrl1 positions.

The control signals bs_ctrl2[k], for k being an integer between 1 andn₁, are given by the following relationships:

bs_ctrl2[k]=floor(bs_ctrl/n ₁)+1 for k≦bs_ctrl1

bs_ctrl2[k]=floor(bs_ctrl/n ₁) for k>bs_ctrl1

where floor(bs_ctrl/n₁) is the integer just lower than bs_ctrl/n₁, i.e.the whole part of bs_ctrl/n₁, in other words the quotient of the wholedivision of bs_ctrl by n₁.

It appears therefore that, for the second stage 27 of elementarydevices, the bs_ctrl1 first elementary devices 28 each perform acircular shift to the right of floor(bs_ctrl/n₁)+1 positions on the n₂symbols received and the n₁-bs_ctrl1 other elementary devices 28 eachperform a circular shift to the right of floor(bs_ctrl/n₁) positions onthe n₂ symbols received.

In order to achieve a shift to the left by a number of positions givenby the signal bs_ctrl as shown in the example of the device 20 shown inFIG. 4, device 20 can be controlled with a signal bs_ctrl′ equal tomod(N-bs_ctrl,N).

Each elementary device 22, 28 can be of a logarithmic type. Eachelementary device 22 then comprises n₁*nbit_data*ceil(log₂(n₁))multiplexers, and each elementary device 28 comprisesn₂*nbit_data*ceil(log₂(n₂)) multiplexers. If a barrel shifter 20comprising the same number of multiplexers as a barrel shifter withlogarithmic structure is required, the integers n₁ and n₂ must satisfythe following relationship:

ceil(log₂(n ₁))+ceil(log₂(n ₂))=ceil(log₂(N))

FIG. 5 shows an example of the rearrangement stage 26 of FIG. 4. The toprow represents the positions 0 to n₂*n₁−1 symbols received by therearrangement stage 26. For clarity, the groups of n₁ positions havebeen regrouped, illustrating the groups of n₁ symbols provided by theelementary devices 22. Similarly, the bottom row represents thepositions 0 to n₁*n₂−1 of the symbols provided by the rearrangementstage 26. For clarity, the positions have been regrouped into groups ofn₂ positions, illustrating the groups of n₂ symbols provided to theelementary devices 28.

In general, the rearrangement stage 26 transmits a symbol received at aposition i, i being an integer between 0 and n₂*n₁−1, to a position j, jbeing an integer between 0 and n₂*n₁−1, according to the followingrelationship:

j=mod(i,n ₁)*n ₂+floor(i/n ₁)

FIG. 6 shows an example of the rearrangement stage 30. In the same wayas described in relation with FIG. 5, the positions 0 to n₂*n₁−1 of thesymbols received by the rearrangement stage 30 have been regrouped, inthe top row, into groups of n₂ positions, illustrating the groups of n₂symbols provided by the elementary devices 28 and the position 0 ton₂*n₁−1 of the symbols provided by the rearrangement stage 30 have beenregrouped, in the bottom row, in groups of n₁ positions.

In general, the rearrangement stage 30 transmits a symbol received at aposition i, i being an integer between 0 and n₂*n₁−1, to a position j, jbeing an integer between 0 and n₂*n₁−1 according to the followingrelationship:

j=mod(i,n ₂)*n ₁+floor(i/n ₂)

FIG. 7 illustrates an example of the control device 24. Thedetermination of the different control signals can be determined basedon the signal bs_ctrl by determining the signals mod(bs_ctrl,n₁) andfloor(bs_ctrl,n₁). The signal mod(bs_ctrl,n₁) corresponds directly tothe control signal bs_ctrl1. The signal floor(bs_ctrl/n₁) is transmittedto the first inputs of n₁ multiplexers 34. A module 35 also receives thesignal floor(bs_ctrl/n₁) to which it adds 1. The output of module 35 isprovided to the second inputs of multiplexers 34. The outputs of n₁multiplexers 34 correspond respectively to signals bs_ctrl2[1] tobs_ctrl2[n₁]. The n₁ multiplexers 34 are controlled by n₁ controlsignals c₁ to c_(n1) provided by a decoding module 36 which receives thesignal mod(bs_ctrl,n₁). Assuming that k is equal to mod(bs_ctrl,n₁), thedecoding module 36 provides the signals c₁ to c_(k) at logic level 1,and the signals c_(k+1) to c_(n1) at logic level 0.

The operation of the barrel shifter 20 according to the exemplaryembodiment shown in FIG. 4 will now be described in further detail forthe particular example in which n₁=3 and n₂=4, i.e. for a barrel shifter20 receiving twelve symbols S₀ to S₁₁ and adapted to provide a shift tothe right of 0 to 11 positions.

FIG. 8 shows the structure of such a barrel shifter 20, therearrangement stages 26, 30 being represented by paths 38 connected tothe elementary devices 22, 28.

FIG. 9 shows the positions occupied by symbols S₀ to S₁₁ during theoperation of the device of FIG. 8 for providing a right shift of fivepositions. In particular, at the first, second, third, fourth and fifthlines of FIG. 9, the positions have been represented relative to thesymbols S₀ to S₁₁ at:

the input of stage 21 of elementary devices 22;

the output of stage 21 of elementary devices 22 (the input of therearrangement stage 26);

the output of rearrangement stage 26 (the input of stage 27 of theelementary devices 28);

the output of stage 27 of elementary devices 28 (the input of therearrangement stage 30); and

the output of the rearrangement stage 30.

In the present example, the signal bs_ctrl is equal to 5. Thus we have:

bs_ctrl1=mod(5,3)=2

Each elementary device 22 therefore performs a shift operation, on thethree symbols received of two positions to the right.

The control signals bs_ctrl26[1], bs_ctrl2[2] and bs_ctrl2[3] areobtained in the following manner:

bs_ctrl2[1]=bs_ctrl2[2]=floor(5/3)+1=2

bs_ctrl2[3]=floor(5/3)=1

The first and second elementary devices 28 (from left to right in FIG.8) each performs a shift on the four symbols that they receive of twopositions to the right, and a third elementary device 28 performs ashift on the four symbols that it receives of one position to the right.

The maximum dispersion of path lengths and the maximum number ofjunctions between paths are present only at the rearrangement stages 26,30. Indeed, the elementary devices 22, 28 only each processing a reducednumber of symbols, each thus has a path length dispersion and a numberof path junctions limited even though they have a logarithmic structure.The surface overhead is therefore limited for a barrel shifter 20.Furthermore, as the device 20 is implemented with the same number ofmultiplexers as a device having a logarithmic structure, a barrelshifter is finally achieved which occupies a surface smaller than thesurface occupied by a device having a logarithmic structure.

FIG. 10 illustrates a variation of the example of device 20 shown inFIG. 4. Compared with device 20 illustrated in FIG. 4, the rearrangementstage 30 has been removed. A rearrangement stage 39 receives the Nsymbols and provides n₂ groups of n₁ symbols to the elementary devices22 of the first stage 21 of elementary devices. The structure of therearrangement stage 39 is identical to the structure of rearrangementstage 30 illustrated in FIG. 6. The elementary devices 22 of the firststage 21 receive the control signals bs_ctrl1[1] to bs_ctrl1[n₂]respectively, provided by the control device 24 based on the controlsignal bs_ctrl. The elementary devices 22 of the first stage 21 ofelementary devices can therefore provide different shifts on the groupsof n₁ symbols received. Each elementary device 28 of the second stage 27of elementary devices receives the same signal bs_ctrl2 representing thenumber of shift positions to be provided by each elementary device 28.

In the exemplary embodiment of the barrel shifter 20 represented in FIG.10, a circular shift to the right can be performed of a number ofpositions given by the signal bs_ctrl. The control signal bs_ctrl2 isgiven by the following relationship:

bs_ctrl2=mod(bs_ctrl,n ₂)

Each elementary device 28 therefore performs a shift to the right bybs_ctrl2 positions on the n₂ symbols received.

The control signals bs_ctrl1[k] for k being an integer between 1 and n₂,are given by the following relationships:

bs_ctrl1[k]=floor(bs_ctrl/n ₂) for k≦n ₂−bs_ctrl2

bs_ctrl1[k]=floor(bs_ctrl/n ₂)+1 for k>n ₂−bs_ctrl2

FIG. 11 illustrates a first example of an embodiment of a barrel shifter40 according to the invention which will be described for a particularexample in which N=12, n₁=3 and n₂=4. According to the first exemplaryembodiment, the device 40 comprises, as for the exemplary embodimentrepresented in FIG. 4, stages 21, 27 of elementary devices 22, 28 andrearrangement stages 26, 30. Also, the elementary devices 22 receive thesame control signal bs_ctrl1. However, in contrast to the exemplaryembodiment represented in FIG. 4, the device 40 according to the firstexemplary embodiment provides an identical control signal bs_ctrl2 toeach elementary device 28. Because of this, each of the n₁ elementarydevices 28 provides the same shift on the n₂ symbols received.

To achieve the shift required, the device 40 comprises a supplementarystage 42 comprising N multiplexing modules 44 positioned between stage21 of elementary devices 22 and the rearrangement stage 26. Eachmultiplexing module 44 of stage 42 receives, at a first input, a symbolat a determined relative position amongst the n₁ symbols provided by anelementary device 22 and, at a second input, a symbol at the samedetermined relative position amongst the n₁ symbols provided by anadjacent elementary device 22 (i.e. the elementary device 28 to the leftin the first example where a shift to the right is performed, the device“to the left” of elementary device 22 the furthest left in FIG. 11corresponding to the elementary device 22 the furthest to the right).

The n₂ multiplexing modules, receiving the signals provided by theelementary devices 22 adjacent to a same position k relative to the n₁symbols provided by each of the elementary devices 22, are controlled bythe same control signal Mux[k]. In the example illustrated in FIG. 11,the multiplexing modules 44, receiving the signals in the first positionof the three symbols provided by each elementary device 22, arecontrolled by a control signal Mux[1], the multiplexing modules 44,receiving the symbols in the second position of the three symbolsprovided by each elementary device 22, are controlled by a controlsignal Mux[2] and the multiplexing modules 44, receiving the symbols inthe third position of the three symbols provided by each elementarydevice 22, are controlled by a control signal Mux[3].

The control signals Mux[k], k being an integer between 1 and n₁, aregiven by the following relationships:

Mux[k]=1 for k≦bs_ctrl1; and

Mux[k]=0 for k>bs_ctrl1

The control signal bs_ctrl1 is given by the following relationship:

bs_ctrl1=mod(bs_ctrl,n ₁)

and the control signal bs_ctrl2 is given by the following relationship:

bs_ctrl2=floor(bs_ctrl,/n ₁)

By adopting a logarithmic structure for the elementary devices 22, 28,the device 40 according to the first exemplary embodiment comprisesN*nbit_data additional multiplexers when compared to a barrel shifterhaving a logarithmic structure. The device 40 according to the firstexemplary embodiment nevertheless conserves all of the advantages of theexemplary embodiment shown in FIG. 4 in that it allows a reduction inthe surface overhead compared to a barrel shifter having a logarithmicstructure.

FIG. 12 illustrates the operation of device 40 according to the firstexemplary embodiment of the invention in the same way as FIG. 9, forperforming a shift by five positions to the right.

In particular, in the first, second, third, fourth, fifth and sixthlines of FIG. 12, the relative positions of the symbols S₀ to S₁₁ havebeen represented at:

the input of stage 21 of elementary devices 22;

the output of stage 21 of elementary devices 22 (the input of stage 42of multiplexing modules 44);

the output of stage 42 of the multiplexing modules 44 (the input of therearrangement stage 26);

the output of the rearrangement stage 26 (the input of stage 27 ofelementary devices 28);

the output of stage 27 of elementary devices 28 (the input of therearrangement stage 30); and

the output of rearrangement stage 30.

In the present example, the signal bs_ctrl is equal to 5. This gives:

bs_ctrl1=mod(5,3)=2

Each elementary device 22 therefore performs a shift on the threesymbols received of two positions to the right. Also, we have:

bs_ctrl2=floor(5,3)=1

Each elementary device 28 performs therefore a shift on the four symbolsreceived of one position to the right.

Furthermore, MUX[1]=MUX[2]=1 and MUX[3]=0. This signifies that for eachgroup of three symbols provided by an elementary device 22, the symbolin the third position is not modified and the symbols in the first andsecond positions are replaced by the symbols in the first and secondpositions of the three symbols provided by the elementary device 22 atthe “left” of the elementary device 22 considered.

According to a variation of the first exemplary embodiment describedabove, an elementary device 22, 28 can itself be provided according tothe first exemplary embodiment of the invention.

FIG. 13 illustrates a second exemplary embodiment of device 40 accordingto the invention. When compared to the first exemplary embodiment ofdevice 40 represented in FIG. 11, the rearrangement stage 30 is removed.A rearrangement stage 46 receives the N symbols and provides n₂ groupsof n₁ symbols to the elementary devices 22 of the first stage 21 ofelementary devices. The structure of the rearrangement stage 46 isidentical to the structure of the rearrangement stage 30 illustrated inFIG. 6. An additional stage 47 comprising N multiplexing modules 48 isconnected to the rearrangement stage 46. The stage 47 has the samestructure as the structure of stage 42 of device 40 represented in FIG.11 in that each multiplexing module 48 receives, at a first input, asymbol at a determined relative position in a group of n₂ symbols and,at a second input, a symbol at the same determined position in anadjacent group of n₂ symbols (i.e. the group of n₂ symbols situated atthe left in the present example where a shift to the right is performed,the group of n₂ symbols “at the left” of the group of n₂ symbols thefurthest to the left in FIG. 13 corresponding to the group of n₂ symbolsthe furthest to the right). Each group of n₁ multiplexing modules,receiving the symbols at a same relative position k in two adjacentgroups of n₂ symbols, is controlled by a same control signal Mux[k].

The control signals Mux[k], k being an integer between 1 and n₂, aregiven by the following relationships:

Mux[k]=0 for k≦n ₂−bs_ctrl2; and

Mux[k]=1 for k>n ₂−bs_ctrl2

The elementary devices 22 receive the same control signal bs_ctrl1 givenby the following relationship:

bs_ctrl1=floor(bs_ctrl/n ₂)

and the elementary devices 28 receive the same control signal bs_ctrl2given by the following relationship:

bs_ctrl2=mod(bs_ctrl,n ₂)

In the first and second exemplary embodiments according to the inventiondescribed above, the control signals bs_ctrl1 and bs_ctrl2 are identicalfor the elementary devices 22 and 26 respectively. This advantageouslyallows the structure of the control device 24 to be simplified withrespect to the structure represented in FIG. 7 relating to the exemplaryembodiment of FIG. 4.

FIG. 14 illustrates schematically an exemplary embodiment of a decoder50 of LDPC code. The LDPC decoder 50 comprises processors (μP) 52operating in parallel receiving the symbols IN and providing the symbolsOUT by an iterative process. To do this, the decoder 50 comprises aniteration loop in which the symbols are stored in memories (MEM) 54 andare provided again to processors 52 after being subjected to a circularshift provided by a barrel shifter (BS) 56. Such a structure can also beimplemented for a turbo-code decoder and, in general, for a decoder foriterative error correcting codes using a barrel shifter for interleavingthe data used internally.

FIG. 15 is a schematic plan view that illustrates an example of thelayout of elements of decoder 50 when decoder 50 is implemented in anintegrated fashion, and when the barrel shifter 56 has a logarithmicstructure. The memories 54 are arranged in an exterior ring and theprocessors 52 are arranged in an interior ring. The central region ofthe interior ring is occupied by the barrel shifter 56. With alogarithmic structure, N*ceil(log₂(N))*nbit_data multiplexers and theassociated metal connecting tracks used for the implementation ofelectrical connections must be placed in the central region.

FIG. 16 is the same view as that of FIG. 15 but shows the case where thebarrel shifter 56 corresponds to the first or second exemplaryembodiments according to the invention. The memories 54 and theprocessors 52 are provided in the form of rings. The present inventionallows the arrangement of the first stage 21 of elementary devices 22 inthe form of a ring in which the central region is occupied by the secondstage 27 of elementary devices 28 (and possibly stages 42, 47 ofmultiplexing modules 44, 48). This is made possible by the fact that thefirst stage 21 comprises distinct elementary devices 22. In the centralregion, N*ceil(log₂(n₂))*nbit_data multiplexers must be placed (to whichN*nbit_data multiplexers of the additional stage 42, 47 may possibly beadded) and the corresponding metal tracks, i.e. a lower number than thenumber of multiplexers to be provided in the example illustrated in FIG.15, thus simplifying the layout. According to a variation, theelementary devices 28 can be arranged in a ring in place of theelementary devices 22.

To maximize the reduction in the surface area overhead, a compromisemust be found for the integers n₁ and n₂. Indeed, for reducing thesurface occupied by the central region, the integer n₂ must be small.However, if n₁ is too large, the elementary devices 22 risk being of toolarge a volume and the final reduction in surface overhead would not begreat. An acceptable compromise includes choosing n₁ approximately equalto n₂.

Naturally, the present invention is susceptible to various variationsand modifications that would appear to those skilled in the art. Inparticular, memory elements can be provided between the two stages ofelementary devices. Furthermore, although the barrel shifters describedabove are adapted to provide a shift to the right, it is clear that thepresent invention can be applied to an embodiment of a barrel shifteradapted to form a shift to the left.

Having thus described at least one illustrative embodiment of theinvention, various alterations, modifications, and improvements willreadily occur to those skilled in the art. Such alterations,modifications, and improvements are intended to be within the spirit andscope of the invention. Accordingly, the foregoing description is by wayof example only and is not intended as limiting. The invention islimited only as defined in the following claims and the equivalentsthereto.

1. A barrel shifter arranged to receive a number N of symbols inparallel, arranged in a number n₂ of distinct groups of a number n₁ ofsymbols, and to apply a total circular shift to the N symbols of adetermined number of positions, the barrel shifter comprising: n₂ firstbarrel shifters, each first barrel shifter being adapted to receive oneof the distinct groups of n₁ symbols and to apply a first circular shiftto said group of n₁ symbols, the first shift depending on the totalshift; a rearrangement module adapted to receive the N symbols providedby the first barrel shifters and to provide N symbols arranged, in adetermined manner, in n₁ distinct groups of n₂ symbols; n₁ second barrelshifters, each second barrel shifter being adapted to receive one of thedistinct groups of n₂ symbols and to apply a second circular shift tosaid group of symbols, the second shift depending on the total shift; acontrol module adapted to receive a signal bs_ctrl representing a totalshift and to provide, to each first barrel shifter, a signal bs_ctrl1representing the first shift that depends on the total shift and whichis identical for each first barrel shifter, and adapted to provide, toeach second barrel shifter, a signal bs_ctrl2 representing the secondshift which depends on the total shift and which is identical for eachsecond barrel shifter; and a switching module adapted to switch at leasttwo of the symbols of the N symbols.
 2. The barrel shifter according toclaim 1, wherein the rearrangement module is adapted to provide, for asymbol received at an i^(th) position in the N symbols provided by thefirst barrel shifters, said symbol at a j^(th) position according to thefollowing relationship:j=mod(i,n ₁)*n ₂+floor(i/n ₁) where i is an integer between 0 and N−1,mod(i,n₁) is the remainder of the whole division of i by n₁ andfloor(i/n₁) is the quotient of the whole division of i by n₁.
 3. Thebarrel shifter according to claim 1, wherein the control module isadapted to provide the signal bs_ctrl1 according to the followingrelationship:bs_ctrl1=mod(bs_ctrl,n ₁) where mod(bs_ctrl,n₁) is the remainder of thewhole division of bs_ctrl by n₁, and adapted to provide the signalbs_ctrl2 according to the following relationship:bs_ctrl2=floor(bs_ctrl/n ₁) where floor(bs_ctrl/n₁) is the quotient ofthe whole division of bs_ctrl by n₁, the barrel shifter furthercomprising an auxiliary rearrangement module adapted to receive the Nsymbols provided by the second barrel shifters and, for a symbolreceived at an i^(th) position, to provide said symbol at a j^(th)position according to the following relationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂, theswitching module comprising N multiplexing modules, each multiplexingmodule receiving a first symbol at a relative position k, k being aninteger between 1 and n₁, of the n₁ symbols provided by a first barrelshifter and a second symbol at said relative position k of the n₁symbols provided by a first adjacent barrel shifter and providing thesecond symbol when k is less than or equal to bs_ctrl1 and the firstsymbol when k is greater than bs_ctrl1.
 4. The barrel shifter accordingto claim 1, wherein the control module is adapted to provide the signalbs_ctrl1 according to the following relationship:bs_ctrl1=floor(bs_ctrl/n ₂) where floor(bs_ctrl/n₂) is the quotient ofthe whole division of bs_ctrl by n₂, and adapted to provide the signalbs_ctrl2 according to the following relationship:bs_ctrl2=mod(bs_ctrl,n ₂) where mod(bs_ctrl,n₂) is the remainder of thewhole division of bs_ctrl by n₂, the barrel shifter further comprisingan auxiliary rearrangement module adapted to receive the N symbols andto provide the N symbols to the first barrel shifters such that, for asymbol received at an i^(th) position, said symbol is provided at aj^(th) position according to the following relationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂, theswitching module comprising N multiplexing modules, each multiplexingmodule receiving a first symbol at a relative position k, k being aninteger between 1 and n₂, in the group of n₂ symbols amongst the Nsymbols received by said barrel shifter, and a second symbol at saidrelative position k in an adjacent group of n₂ symbols and providing, tothe auxiliary rearrangement module, the first symbol when k is less thanor equal to the difference between n₂ and bs_ctrl2 and the second symbolwhen k is greater than the difference between n₂ and bs_ctrl2.
 5. Adecoder comprising processors connected to memory elements and to abarrel shifter according to claim 1, wherein the processors and thememory elements are arranged in first and second concentric rings and inwhich the first and second barrel shifters of the barrel shifter arearranged in a third ring concentric to the first and second rings.
 6. Abarrel shifter configured to receive a number N of symbols in parallel,the N symbols being arranged in a number n₂ of distinct groups of anumber n₁ of symbols, and to apply a total circular shift to the Nsymbols of a determined number of positions, the barrel shiftercomprising: n₂ first barrel shifters, each first barrel shifter beingconfigured to receive one of the distinct groups of n₁ symbols and toapply a first circular shift to said group of n₁ symbols, the firstcircular shift depending on the total circular shift; a rearrangementmodule configured to receive the N symbols provided by the first barrelshifters and to provide N symbols arranged, in a determined manner, inn₁ distinct groups of n₂ symbols; n₁ second barrel shifters, each secondbarrel shifter being configured to receive one of the distinct groups ofn₂ symbols and to apply a second circular shift to said group ofsymbols, the second circular shift depending on the total circularshift; and a switching module configured to switch at least two of thesymbols of the N symbols output from the second barrel shifters.
 7. Thebarrel shifter according to claim 6, wherein the rearrangement module isconfigured to provide, for a symbol received at an i^(th) position inthe N symbols provided by the first barrel shifters, said symbol at aj^(th) position according to the following relationship:j=mod(i,n ₁)*n ₂+floor(i/n ₁) where i is an integer between 0 and N−1,mod(i,n₁) is the remainder of the whole division of i by n₁ andfloor(i/n₁) is the quotient of the whole division of i by n₁.
 8. Adecoder comprising a plurality of processors connected to a plurality ofmemory elements and a barrel shifter according to claim 1, wherein theplurality of processors and the plurality of memory elements arearranged, respectively, in first and second concentric rings and inwhich the first and second barrel shifters of the barrel shifter arearranged in a third ring concentric to the first and second rings.
 9. Abarrel shifter configured to receive a number N of symbols in parallel,the N symbols being arranged in a number n₂ of distinct groups of anumber n₁ of symbols, and to apply a total circular shift to the Nsymbols of a determined number of positions, the barrel shiftercomprising: n₂ first barrel shifters, each first barrel shifter beingconfigured to receive one of the distinct groups of n₁ symbols and toapply a first circular shift to said group of n₁ symbols, the firstcircular shift depending on the total circular shift; a rearrangementmodule configured to receive the N symbols provided by the first barrelshifters and to provide N symbols arranged, in a determined manner, inn₁ distinct groups of n₂ symbols; n₁ second barrel shifters, each secondbarrel shifter being configured to receive one of the distinct groups ofn₂ symbols and to apply a second circular shift to said group ofsymbols, the second circular shift depending on the total circularshift; and a control module configured to receive a signal bs_ctrlrepresenting a total circular shift and to provide, to each first barrelshifter, a signal bs_ctrl1 representing the first circular shift, andconfigured to provide, to each second barrel shifter, a signal bs_ctrl2representing the second circular shift.
 10. The barrel shifter of claim9, wherein the signal bs_ctrl1 is identical for each first barrelshifter and the signal bs_ctrl2 is identical for each second barrelshifter.
 11. The barrel shifter according to claim 9, wherein thecontrol module is configured to provide the signal bs_ctrl1 according tothe following relationship:bs_ctrl1=mod(bs_ctrl,n ₁) where mod(bs_ctrl,n₁) is the remainder of thewhole division of bs_ctrl by n₁, and configured to provide the signalbs_ctrl2 according to the following relationship:bs_ctrl2=floor(bs_ctrl/n ₁) where floor(bs_ctrl/n₁) is the quotient ofthe whole division of bs_ctrl by n₁.
 12. The barrel shifter of claim 11,further comprising: an auxiliary rearrangement module configured toreceive the N symbols provided by the second barrel shifters and, for asymbol received at an i^(th) position, to provide said symbol at aj^(th) position according to the following relationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂.
 13. Thebarrel shifter according to claim 9, wherein the control module isconfigured to provide the signal bs_ctrl1 according to the followingrelationship:bs_ctrl1=floor(bs_ctrl/n ₂) where floor(bs_ctrl/n₂) is the quotient ofthe whole division of bs_ctrl by n₂, and configured to provide thesignal bs_ctrl2 according to the following relationship:bs_ctrl2=mod(bs_ctrl,n ₂) where mod(bs_ctrl,n₂) is the remainder of thewhole division of bs_ctrl by n₂.
 14. The barrel shifter of claim 9,further comprising: an auxiliary rearrangement module adapted to receivethe N symbols and to provide the N symbols to the first barrel shifterssuch that, for a symbol received at an i^(th) position, said symbol isprovided at a j^(th) position according to the following relationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂.
 15. Amethod of performing a total circular shift on a number N of symbolsreceived in parallel, the N symbols being arranged in a number n₂ ofdistinct groups of a number n₁ of symbols, the method comprising:applying, with n₂ first barrel shifters, a first circular shift to thedistinct groups of n₁ symbols, wherein the first circular shift dependson the total circular shift; rearranging in a determined manner the Nsymbols provided by the first barrel shifters into n₁ distinct groups ofn₂ symbols; applying, with n₁ second barrel shifters, a second circularshift to the n₁ distinct groups of n₂ symbols, wherein the secondcircular shift depends on the total circular shift; and switching atleast two of the symbols output from the second barrel shifters.
 16. Themethod of claim 15, wherein rearranging further comprises: providing,for a symbol received at an i^(th) position in the N symbols provided bythe first barrel shifters, said symbol at a j^(th) position according tothe following relationship:j=mod(i,n ₁)*n ₂+floor(i/n ₁) where i is an integer between 0 and N−1,mod(i,n₁) is the remainder of the whole division of i by n₁ andfloor(i/n₁) is the quotient of the whole division of i by n₁.
 17. Amethod of performing a total circular shift on a number N of symbolsreceived in parallel, the N symbols being arranged in a number n₂ ofdistinct groups of a number n₁ of symbols, the method comprising:applying, with n₂ first barrel shifters, a first circular shift to thedistinct groups of n₁ symbols, wherein the first circular shift dependson the total circular shift; rearranging in a determined manner the Nsymbols provided by the first barrel shifters into n₁ distinct groups ofn₂ symbols; applying, with n₁ second barrel shifters, a second circularshift to the n₁ distinct groups of n₂ symbols, wherein the secondcircular shift depends on the total circular shift; and providing, toeach first barrel shifter, a signal bs_ctrl1 representing the firstcircular shift, and providing, to each second barrel shifter, a signalbs_ctrl 2 representing the second circular shift.
 18. The method ofclaim 17, wherein the signal bs_ctrl1 is identical for each first barrelshifter and the signal bs_ctrl2 is identical for each second barrelshifter.
 19. The method of claim 17, wherein the signal bs_ctrl1 isprovided according to the following relationship:bs_ctrl1=mod(bs_ctrl,n ₁) where mod(bs_ctrl,n₁) is the remainder of thewhole division of bs_ctrl by n₁, and wherein the signal bs_ctrl2 isprovided according to the following relationship:bs_ctrl2=floor(bs_ctrl/n ₁) where floor(bs_ctrl/n₁) is the quotient ofthe whole division of bs_ctrl by n₁
 20. The method of claim 17, furthercomprising: receiving the N symbols provided by the second barrelshifters and, for a symbol received at an i^(th) position, providingsaid symbol at a j^(th) position according to the followingrelationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂.
 21. Themethod of claim 17, wherein the signal bs_ctrl1 is provided according tothe following relationship:bs_ctrl1=floor(bs_ctrl/n ₂) where floor(bs_ctrl/n₂) is the quotient ofthe whole division of bs_ctrl by n₂, and the signal bs_ctrl2 is providedaccording to the following relationship:bs_ctrl2=mod(bs_ctrl,n ₂) where mod(bs_ctrl,n₂) is the remainder of thewhole division of bs_ctrl by n₂.
 22. The method of claim 17, furthercomprising: providing the N symbols to the first barrel shifters suchthat, for a symbol received at an i^(th) position, said symbol isprovided at a j^(th) position according to the following relationship:j=mod(i,n ₂)*n ₁+floor(i/n ₂) where i is an integer between 0 and N−1,mod(i,n₂) is the remainder of the whole division of i by n₂, andfloor(i/n₂) is the quotient of the whole division of i by n₂.